﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace FirstApp
{
        public partial class Dodaj : Form
        {
                List<Adres> adresy;
                Adres adres;
                Lobby Lobby;
                bool blad = false;
                public Dodaj(Lobby LB)
                {
                        InitializeComponent();
                        adresy = new List<Adres>();
                        Lobby = LB;
                        labelEmailValidator.Visible = false;
                }

                private void buttonDodajAdres_Click(object sender, EventArgs e)
                {
                        if (0 == adresy.Count())
                        {
                                adresy.Add(new Adres(0, "nowy"));
                                dataGridView1.DataSource = null;
                                dataGridView1.DataSource = adresy;
                                dataGridView1.Columns[0].Visible = false;
                        }
                        else
                        {
                                adres = adresy.Last();
                                if (adres.KodPocztowy == "" || adres.Miasto == "" || adres.Panstwo == "" || adres.Stan == "" || adres.Ulica == "") MessageBox.Show("Musisz uzupełnić wszystkie adresy aby podać nowy!");
                                else
                                {
                                        adresy.Add(new Adres(adresy.Last().Id - 1, "nowy"));
                                        dataGridView1.DataSource = null;
                                        dataGridView1.DataSource = adresy;
                                        dataGridView1.Columns[0].Visible = false;
                                }
                        }
                }

                private void buttonDodaj_Click(object sender, EventArgs e)
                {
                        foreach (Adres adr in adresy)
                        {
                                if (adr.KodPocztowy == null || adr.Miasto == null || adr.Panstwo == null || adr.Stan == null || adr.Ulica == null) blad = true;
                        }
                        if (TxtAdresEmail.Text.Trim() == "" || TxtImiePrzedstawiciela.Text.Trim() == "" || TxtNazwaFirmy.Text.Trim() == "" || TxtNazwiskoPrzedstawiciela.Text.Trim() == "" || TxtNumerTelefonu.Text.Trim() == "") blad = true;
                        if (blad) MessageBox.Show("Wszystkie pola muszą być wypełnione!");
                        else
                        {
                                Klient klinet = new Klient(TxtAdresEmail.Text, TxtNazwaFirmy.Text, TxtImiePrzedstawiciela.Text, TxtNazwiskoPrzedstawiciela.Text, TxtNumerTelefonu.Text, adresy);
                                if (klinet.Dodaj())
                                {
                                        MessageBox.Show("Dodano nowego klienta");
                                        Lobby.inicjuj();
                                        this.Close();
                                }
                                else
                                {
                                        MessageBox.Show("Błąd podczas dodawania");
                                }
                        }

                }

                private void buttonUsunAdres_Click(object sender, EventArgs e)
                {
                        if (dataGridView1.SelectedRows.Count != 1) MessageBox.Show("Musisz wybrać pojedynczy wiesz określający adres");
                        else
                        {
                                int IdAdresu = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
                                adresy.Remove(adresy.Where(x => x.Id == IdAdresu).First());
                                dataGridView1.DataSource = null;
                                dataGridView1.DataSource = adresy;
                                dataGridView1.Columns[0].Visible = false;
                        }
                }
                public bool TestEmailRegex(string emailAddress)
                {
                        string patternStrict = @"^(([^<>()[\]\\.,;:\s@\""]+"
                              + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
                              + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                              + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
                              + @"[a-zA-Z]{2,}))$";
                        Regex reStrict = new Regex(patternStrict);
                        bool isStrictMatch = reStrict.IsMatch(emailAddress);
                        return isStrictMatch;

                }
                private void TxtAdresEmail_Leave(object sender, EventArgs e)
                {
                        if (!TestEmailRegex(TxtAdresEmail.Text))
                        {
                                blad = true;
                                labelEmailValidator.Visible = true;
                        }
                        else
                        {
                                blad = false;
                                labelEmailValidator.Visible = false;
                        }
                }
        }
}
